// 管理用户信息相关的数据

import { defineStore } from 'pinia'
import { loginAPI } from '@/apis/user.js';
import { ref } from 'vue'
import { useCarStore } from './carStore.js'
import { mergeCarAPI } from '@/apis/car.js'

// 创建一个仓库
export const useUserStore = defineStore('user', () => {
    const carStore = useCarStore()
    // 用于存储用户相关的数据
    const userInfo = ref({})

    // 接口请求函数
    const getUserInfo = async ({ account, password }) => {
        const res = await loginAPI({ account, password })
        userInfo.value = res.result
        // 调用将后台数据库中该用户的购物车中的商品数据和仓库中存储的购物车的商品数据合并的接口请求函数
        mergeCarAPI(carStore.carList.map(item => {
            return {
                skuId: item.skuId,
                selected: item.selected,
                count: item.count
            }
        }))
        carStore.updateNewList()
    }

    // 清除用户信息
    const clearUserInfo = ()=>{
        userInfo.value = {}
        // 调用carStore仓库中定义的clearCar方法，清除购物车中的商品数据
        carStore.clearCar()
    }

    return {
        userInfo,
        getUserInfo,
        clearUserInfo
    }
}, {
    // 这里是配置持久化仓库，配置完后，会自动将当前这个仓库中的state数据userInfo用户信息存进localhost本地存储，运用到了 pinia-plugin-persistedstate 库
    persist: true
})